import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';

/// 平台检测服务
class PlatformDetector {
  /// 检测是否为桌面平台（Windows、macOS、Linux）
  static bool isDesktop() {
    return kIsWeb == false &&
        (defaultTargetPlatform == TargetPlatform.windows ||
            defaultTargetPlatform == TargetPlatform.macOS ||
            defaultTargetPlatform == TargetPlatform.linux);
  }

  /// 检测是否为移动平台（Android、iOS）
  static bool isMobile() {
    return kIsWeb == false &&
        (defaultTargetPlatform == TargetPlatform.android ||
            defaultTargetPlatform == TargetPlatform.iOS);
  }

  /// 检测是否为 Web 平台
  static bool isWeb() {
    return kIsWeb;
  }

  /// 检测是否为 Windows 平台
  static bool isWindows() {
    return defaultTargetPlatform == TargetPlatform.windows;
  }

  /// 检测是否为 macOS 平台
  static bool isMacOS() {
    return defaultTargetPlatform == TargetPlatform.macOS;
  }

  /// 检测是否为 Linux 平台
  static bool isLinux() {
    return defaultTargetPlatform == TargetPlatform.linux;
  }

  /// 检测是否为 Android 平台
  static bool isAndroid() {
    return defaultTargetPlatform == TargetPlatform.android;
  }

  /// 检测是否为 iOS 平台
  static bool isIOS() {
    return defaultTargetPlatform == TargetPlatform.iOS;
  }

  /// 获取平台特定的窗口大小因子
  static double getWindowSizeFactor(BuildContext context) {
    if (isDesktop() || isWeb()) {
      // 桌面和Web平台使用更大的窗口因子
      return 0.6;
    } else {
      // 移动平台使用全屏
      return 1.0;
    }
  }

  /// 获取平台特定的卡片圆角
  static double getCardBorderRadius() {
    if (isDesktop() || isWeb()) {
      // 桌面和Web平台使用更大的圆角
      return 16.0;
    } else {
      // 移动平台使用默认圆角
      return 12.0;
    }
  }

  /// 获取平台特定的按钮高度
  static double getButtonHeight() {
    if (isDesktop() || isWeb()) {
      // 桌面和Web平台使用更高的按钮
      return 56.0;
    } else {
      // 移动平台使用默认高度
      return 48.0;
    }
  }

  /// 获取平台特定的输入框内边距
  static EdgeInsets getInputPadding() {
    if (isDesktop() || isWeb()) {
      // 桌面和Web平台使用更大的内边距
      return const EdgeInsets.symmetric(horizontal: 20, vertical: 16);
    } else {
      // 移动平台使用默认内边距
      return const EdgeInsets.symmetric(horizontal: 16, vertical: 12);
    }
  }
}
